from machine import Pin, PWM, I2C, ADC import ssd1306 import time ldrgantry1 = Pin(27, Pin.IN) # entry gantry servo1=PWM(Pin(13),freq=50) ldrgantry2 = Pin(5, Pin.IN) #exit gantry servo2=PWM(Pin(23), freq=50) # ESP32 Pin assignment i2c = I2C(-1, sc=Pin(22), sda=Pin(21)) #gantry status oled_width = 128 oled_height = 64 oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c) #LDR led3 = Pin(12,Pin.OUT) #carpark green led4 = Pin(14, Pin.OUT) #carpark red led5 = Pin(19,Pin.OUT) #carpark green led6 = Pin(16, Pin.OUT) #carpark red led7 = Pin(2,Pin.OUT) #carpark green led8 = Pin(4, Pin.OUT) #carpark red ldr1=ADC(Pin(33)) ldr2=ADC(Pin(32)) ldr3=ADC(Pin(35)) ldr1.atten(ADC.ATTN_11DB) ldr2.atten(ADC.ATTN_11DB) ldr3.atten(ADC.ATTN_11DB) while True: if ldrgantry1.value(): print('entry gantry opening') oled.fill(0) oled.text('Door Opening', 15, 27) oled.invert(True) oled.show() servo1.duty(70) else: print('entry gantry closing') oled.fill(0) oled.text('Door Closing', 15,27) oled.invert(True) oled.show() servo1.duty(20) time.sleep(1) if ldrgantry2.value(): print('exit gantry opening') #oled.fill(0) #oled.text('Door Opening', 15, 27) #oled.invert(True) #oled.show() servo2.duty(70) else: print('exit gantry closing') #oled.fill(0) #oled.text('Door Closing', 15, 27) #oled.invert(True) #oled.show() servo2.duty(20) time.sleep(1) ldr1_value=ldr1.read() print(ldr1_value) if ldr1_value > 500: led3.value(1) led4.value(0) print('CARPARK1: AVAILABLE') else: led3.value(0) led4.value(1) print('CARPARK1: OCCUPIED') time.sleep(0.3) ldr2_value=ldr2.read() print(ldr2_value) if ldr2_value > 620: led5.value(1) led6.value(0) print('CARPARK2: AVAILABLE') else: led5.value(0) led6.value(1) print('CARPARK2: OCCUPIED') time.sleep(0.3) ldr3_value=ldr3.read() print(ldr3_value) if ldr3_value > 900: led7.value(1) led8.value(0) print('CARPARK3: AVAILABLE') else: led7.value(0) led8.value(1) print('CARPARK3: OCCUPIED') time.sleep(0.3)